/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package masterclient;

import Protocol.ReturnObject;
import java.util.ArrayList;

/**
 *
 * @author
 * hemmies
 */
public class QueryManagement {
    private Masterclient mc;
    private String[][] data;
    private String[] name;
    
    public QueryManagement(Masterclient mc){
        this.mc = mc;
    }
    
    /**
    * Deze methode haalt alle querys op uit de database en vult een Combolist met de omschrijving
    * @author Michael Stevens
    * @since 30-05-2012
    */
    public void getQuerys(){
        ReturnObject ro = mc.getAuth().excecuteSelect("SELECT [ID], [Query], [Description], [isActive] FROM [Query]");
            if(ro.getMessage().equals("ok")){
                mc.getGUI().createCombolistQuery(verwerkReturnObject(ro));
            }
    }
    
    /**
    * Deze methode handelt het verwijderen van een query af
    * @author Michael Stevens
    * @since 30-05-2012
    */
    public void deleteQuery(int i){         
            ReturnObject ro = mc.getAuth().excecuteUpdate("DELETE FROM [Query] WHERE [ID] = " + data[i][0].toString());
            if(ro.getMessage().equals("ok")){
                mc.getGUI().resetComboListQuery();
                getQuerys();
            }
    }
    
    /**
    * Deze methode handelt het aanmaken van een query af
    * @author Michael Stevens
    * @since 30-05-2012
    */
    public void createQuery(String q, String desc, int isA){
        ReturnObject ro = mc.getAuth().excecuteUpdate("INSERT INTO [Query]([Query], [Description], [isActive]) VALUES" 
                        + " (\'" + q + "\', \'" + desc + "\', " + isA + ")");
            if(ro.getMessage().equals("ok")){
                mc.getGUI().resetComboListQuery();
                getQuerys();
            }
    }
    
     /**
    * Deze methode handelt het wijzigen van een query af
    * @author Michael Stevens
    * @since 30-05-2012
    */
    public void updateQuery(int index, String q, String desc, int isA){
        ReturnObject ro = mc.getAuth().excecuteUpdate("UPDATE [Query] SET [Query] = \'" 
                    + q + "\', [Description] = \'" + desc + "\', [isActive] = " + isA + " WHERE [ID] = " + data[index][0].toString());
            if(ro.getMessage().equals("ok")){
                mc.getGUI().resetComboListQuery();
                getQuerys();
            }
    }
    
    /**
    * Hier wordt het binnenkomende returnobject uitgelezen en worden de 
    * waarden in arrays gezet.
    * @return de array string met naam
    * @author Michael Stevens
    * @since 30-05-2012
    */
    public String[] verwerkReturnObject(ReturnObject ro){       
        int counter = 0;
        
        name = new String[ro.getRijen().size()];
        
        data = new String[ro.getRijen().size()][ro.getKolommen().size()];
        
        for(ArrayList a:ro.getRijen()){
            int ic = 0;
            name[counter] = a.get(2).toString();
            for(Object o: a){
                data[counter][ic] = o.toString();
                ic++;
            }                       
            counter++;
        }
        return name;
    }

    /**
     * @return the data
     */
    public String[][] getData() {
        return data;
    }
}
